"""
在测试用例的前面加上:
pytest.mark. parametrize("参数名"，列表数据)参数名:用来接收每一项数据，并作为测试用例的参数。列表数据:多组测试数据。
@pytest.mark .parametrize("参数1,参数2"，[(数据1，数据2)，(数据1，数据2)])
示例:
@pytest.mark.parametrize( " a,b, c",[(1,3,4)，(10,35,45),(22.22,22.22,44.44)])def test_add(a,b,c):
res = a + b
assert res == c

测试用例的:前置操作(准备工作 –准备环境/数据/资源...)、
后置操作〔清理工作–关闭环境/清理数据/释放资源...)
前置工作- setup
执行测试用例
后置工作- teardown
在每条测试用例执行之前，打印:一条测试用例开始执行执行测试用例
在每条测试用例执行之后，打印:一条测试用例执行结束
在一个测试类下的第一条用例执行之前，打印:测试类下的用例开始执行执行测试类下的用例
在一个测试类下的最后一条用例执行之前，打印:测试类下的用例执行结束

定义fixture
1、函数表示，函数名称自定义。
2、函数前面，要用@pytest.fixture来声明它是一个fixture
3、包含前置准备工作的代码、后置清理工作的代码。前置代码和后置代码之间用yield隔开
yield之前的代码为:前置工作
yield之后的代码为:后置工作
4、作用域: function(测试函数-默认)、class(测试类)、module(测试模块)、session(测试会话)
scope参数来设置
调用fixture
在测试类/测试用例的名字上:
pytest.mark.usefixtures("定义的fixture函数划")
支持在测试类/测试用例上调用多个fixture


共享机制;
定义的fixture,不同的.py里的测试用例，都可以调用。公共的地方:conftest.py(存放fixtures)
不需要测试用例.py文件去引入，pytest会自动找的。
(fixtures可以放在类里面、.py里面、conftest.py)用例当中如果调用了fixture,
那么，首先找自己所在的文件有没有如果有，优先用自己的。
如果没有，则会去找同级目录下的conftest.py里有没有
如果同级没有，则会去上找一级目录下的conftest.py里有没有...
一直到rootdir

# 继承，fixture继承其他的fuxture
@pytest.fixture(scope="class")
def class_fix():
    #前置代码
    print("-----测试类的前置条件开始执行-----")
    yield
    #后置代码
    print("-----测试类的后置条件执行------")


# 继承，fixture继承其他的fuxture
@pytest.fixture
def hello(class_fix):
    #前置代码
    print("用例前置条件开始执行")
    yield
    #后置代码
    print("用例后置条件执行")

执行顺序:
class_fix的前置hello的前置hellor的后置
class_fix的后置Ⅰ
fixture1(fixture2) --fixture2的scope不能低于fixture1

"""